# =============================================
# Python print() 函数详解及示例
# =============================================

# 基本用法：输出字符串
print("Hello, World!")  # 输出: Hello, World!

# 输出多个变量（自动用空格分隔）
name = "Alice"
age = 25
print(name, "is", age, "years old.")  # 输出: Alice is 25 years old.

# 使用 sep 参数自定义分隔符
print("2023", "10", "05", sep="-")    # 输出: 2023-10-05
print("apple", "banana", "cherry", sep=", ")  # 输出: apple, banana, cherry

# 使用 end 参数改变结尾字符（默认是\n换行）
print("Hello", end=" ")
print("World!")  # 输出: Hello World!（两行代码输出在同一行）

# 格式化输出（三种常用方式）

# 1. f-string（Python 3.6+ 推荐）
print(f"{name} is {age} years old.")  # 输出: Alice is 25 years old.
print(f"Next year, {name} will be {age+1}")  # 输出: Next year, Alice will be 26

# 2. str.format()
print("{} is {} years old.".format(name, age))  # 输出: Alice is 25 years old.
print("{1} years old is {0}".format(name, age)) # 参数索引: Alice is 25 years old.

# 3. 旧式字符串格式化（不推荐新项目使用）
print("%s is %d years old." % (name, age))  # 输出: Alice is 25 years old.

# 输出到文件（而不是控制台）
with open("output.txt", "w") as f:
    print("This goes to a file!", file=f)  # 内容会写入output.txt文件

# 特殊字符处理
print("Line1\nLine2\tTabbed")  # \n 换行，\t 制表符
print(r"Raw string: \n\t")     # 输出: Raw string: \n\t （r表示原始字符串）

# 控制数值格式（使用f-string）
pi = 3.1415926
print(f"Pi: {pi:.2f}")        # 保留两位小数 → Pi: 3.14
print(f"Hex: {255:x}")        # 十六进制 → Hex: ff
print(f"Scientific: {123456789:.2e}")  # 科学计数法 → Scientific: 1.23e+08

# 打印复杂数据结构
fruits = ["apple", "banana", "cherry"]
print("Fruits:", fruits)  # 输出: Fruits: ['apple', 'banana', 'cherry']

# 错误处理示例
try:
    print("Age: " + age)  # 会报错（不能直接拼接字符串和整数）
except TypeError:
    print("Error: 需要用 str() 转换类型")
    print("Age: " + str(age))  # 正确写法

# =============================================
# 参数总结：
# print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
# - *objects: 多个输出对象
# - sep: 分隔符（默认空格）
# - end: 结束字符（默认换行）
# - file: 输出目标（默认系统标准输出）
# - flush: 是否立即刷新缓冲区（默认False）
# =============================================